在前一天,我們整理了深度學習中常見的優化方法,從最基本的隨機梯度下降 (SGD),到 Momentum、RMSProp、Adagrad 等。今天我們要深入介紹其中最具代表性、也是實務中最常見的優化方法之一——Adam (Adaptive Moment Estimation)。
Adam 幾乎是深度學習的「預設優化器」。不論是電腦視覺、自然語言處理,還是時間序列預測,只要使用主流深度學習框架 (PyTorch、TensorFlow、Keras),Adam 幾乎總是第一個被嘗試的選擇。
為什麼會有 Adam? 它的出發點是想同時結合 Momentum 與 RMSProp 的優點:
Adam 的設計思想是: 既要考慮梯度的方向 (Momentum),又要考慮不同維度的學習率 (RMSProp),並在數值上進行偏差修正,確保更新穩定。
Adam 的更新規則如下:
在第 $t$ 次迭代時:
$$
g_t = \nabla_\theta L(\theta_t)
$$
$$
m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t
$$
$$
v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2
$$
$$
\hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t}
$$
$$
\theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
$$
其中:
總結: Adam = Momentum + RMSProp + Bias Correction。
Adam 是深度學習時代最具代表性的優化器之一,它結合了 Momentum 與 RMSProp 的優點,在多數應用中表現穩定且高效。雖然它並非在所有情況下都是最佳選擇,但作為「預設起點」仍然無可取代。
如果說 SGD 是經典、穩健的老將,那麼 Adam 就是靈活、快速的新秀。在實務中,選擇 Adam 或 SGD 並不是二選一,而是取決於你的任務需求: 需要快速實驗? 選 Adam;需要極致表現? 選 SGD + Momentum。
未來,我們會看到更多 Adam 的改進版本持續誕生,但核心精神仍是一樣: 如何在複雜的高維優化地形裡,既快又穩地找到一個好解。